Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра АСУ
Методичка №1
З курсу програмування в асемблері
Лабораторна робота №6
Тема: Використання GDI інтерфейсу для побудови графіки в ОС Windows.
Мета: Навчитися користуватися засобами GDI.
Львів 2010
Теоретичні основи
Основні поняття
Розпочнемо з того, що собою представляє GDI, і яку роль грає у ОС Windows.
GDI розшифровується як Graphics Device Interface, і є інтерфейсом, який Windows використовує для малювання 2d графіки. Також це найповільніший спосіб відображення графіки з тих, що існують, проте найпростіший для розуміння основ. Отже, спершу, поговоримо про основні поняття і терміни в GDI.
Почнемо з того, що GDI зазвичай не використовують для створення "крутих" графічних ефектів, для цього є DIRECTX, OPENGL. Проте, для створення простих ефектів з мінімальними зусиллями GDI цілком підходить.
Поняття графічний контекст
Для висвітлення або відтворення (наприклад, на папері) малюнка потрібен пристрій виводу(малювання). Наприклад, в моніторі зображення відтворює 3 лазерними пушками, які контролюються 4-ма магнітами, дякуючи їм, лазери будуються складні кольори та контори, що ми бачимо на екрані. Також цей "пристрій" може виступати як певний механізм, що оперує деякою палітрою компонентів. Якщо перейти до абстрактного мислення, то таким пристроєм можна назвати руку людини. Це геніальний пристрій, котрий може намалювати все що завгодно, починаючи від простої точки закінчуючи складною фігурою з тінями і у кольоровому супроводі. У технології GDI є свій пристрій малювання, який може реалізувати, практично все, його називають графічним контекстом або контекстом пристрою (DC - "Device Context").
Визначення DC для об’єктів типу вікно
У операційній системі Windows будь яке вікно, що відтворюється на екрані є малюнком. Виходячи з попереднього твердження, кожне вікно, це графічний об’єкт. Відповідно всі вікна мають свій DC. Щоб ним скористатися, потрібно його визначити (позичити). Це робиться за допомогою функції GetDC.
У функції є один параметр, хендл вікна. Якщо вікна оголошені як діалогові (див. попередню лабораторну), для визначення хенду контрола використовується функція GetDlgItem.
Функція GetDC позичає DC у вікна, тому після використання потрібно повернути DC власнику, тобто вікну. Це робиться за допомогою функції ReleaseDC. Для взяття DC робочого столу параметром функції GetDC має бути "0". Таке значення хендлу працює тільки у вище згаданій функції. В інших випадках може причинити помилку.
GetDC
hWnd // хендл вікна у котрого позичимо DC
Результат: хендл DC
ReleaseDC
hWnd // хендл вікна у кого позичали DC
hDC // хендл DC
Результат: TRUE (1) якщо повернувся DC вікну
Створити DC не можна його можна або позичити або скопіювати за допомогою функції CreateCompatibleDC. Параметр 1, хендл DC з кого копіюємо. Якщо графічний об’єкт з якого будемо чорно-білий, то "ново спечений" DC також буле чорно-білим.
Поняття растру та основні функції роботи з ним.
Перед тим як використовувати методи GDI, треба зрозуміти яким чином відтворюється графіка у комп‘ютері.
Почнемо з того, що таке растр. Растр - це є сукупність мінімальних одиниць зображення, що розміщено як матриця, де під мінімальною одиницею розуміється піксекль. Піксель це точка, але у комп‘ютерній графіці, точна не є круглою, як ми звикли уявляти, а на справді маленький квадратик. Відповідно сукупність пікселів розміщених послідовно ми будемо називати лінією.
Найпростішою і мабуть най повільнішою функцією у GDI є SetPixel.
SetPixel
HDC // хендл DC
X // координата Х
Y // координата Y
crColor // колір у колуванні RGB
Результат: значення встановленого кольору(RGB), або -1 якщо точка розміщена поза зоною видимості
Для взяття інформації про піксель використовується функції GetPixel
GetPixel
HDC // хендл DC
X // координата Х
Y // координата Y
Результат: значення встановленого кольору(RGB) у координатах Х,Y
Під RGB кодування розуміється представлення кольор...